#ifndef BUTTON_H
#define BUTTON_H

#include <cstdlib>

#include <QAbstractButton>
#include <QObject>
#include <QPixmap>
#include <QSize>

class QEvent;
class QPaintEvent;
class QString;
class QWidget;

class Button : public QAbstractButton
{
    Q_OBJECT

public:
    Button(const QString& rkFilename, QWidget *pkParent = NULL);
    ~Button();

    QSize maximumSize();
    QSize minimumSizeHint() const;
    QSize sizeHint() const;

protected:
    Button(const Button&);
    Button& operator =(const Button&);

    bool event(QEvent* pkEvent);
    void paintEvent(QPaintEvent* pkEvent);

private slots:
    void playSound() const;

private:
    //------------------------------------------------
    //  Attributes.
    //------------------------------------------------
    bool    m_bIsHovered;

    // Pixmap.
    QPixmap m_kPixmap;
};

#endif // BUTTON_H
